package com.jianyu.java.datatypes;

import java.util.ArrayList;

public class use {
    @MyAnnotation(value = "example", count = 5)
    public static void main(String[] args) {
        //Declaration and initialization
        byte b = 100; // 声明一个 byte 类型变量并初始化
        short s = 2000; // 声明一个 short 类型变量并初始化
        int i = 100000; // 声明一个 int 类型变量并初始化
        long l = 100000L; // 声明一个 long 类型变量并初始化，后缀 'L' 表示 long 类型
        float f = 3.14f; // 声明一个 float 类型变量并初始化，后缀 'f' 表示 float 类型
        double d = 3.14159; // 声明一个 double 类型变量并初始化
        char c = 'A'; // 声明一个 char 类型变量并初始化
        boolean isTrue = true; // 声明一个 boolean 类型变量并初始化
        // 声明和初始化 Integer
        Integer intValue = 42; // 自动装箱
        Integer anotherIntValue = new Integer(42); // 显式构造

        Integer wrapperValue = 20;
        int anotherPrimitiveInt = wrapperValue; // 自动拆箱

        // 声明和初始化 Double
        Double doubleValue = 3.14; // 自动装箱
        Double anotherDoubleValue = new Double(3.14); // 显式构造
        // 声明和初始化 Float
        Float floatValue = 2.5f; // 自动装箱
        Float anotherFloatValue = new Float(2.5f); // 显式构造
        // 声明和初始化 Character
        Character charValue = 'A'; // 自动装箱
        Character anotherCharValue = new Character('A'); // 显式构造
        // 声明和初始化 Boolean
        Boolean boolValue = true; // 自动装箱
        Boolean anotherBoolValue = new Boolean(true); // 显式构造
        // 声明和初始化 Long
        Long longValue = 1000L; // 自动装箱
        Long anotherLongValue = new Long(1000L); // 显式构造
        // 声明和初始化 Short
        Short shortValue = 100; // 自动装箱
        Short anotherShortValue = new Short((short) 100); // 显式构造
        // 声明和初始化 Byte
        Byte byteValue = 10; // 自动装箱
        Byte anotherByteValue = new Byte((byte) 10); // 显式构造

        String str = "Hello, World!"; // 声明一个 String 类型变量并初始化
        int[] arr = {1, 2, 3, 4, 5}; // 声明一个整型数组并初始化
        int[][] matrix = {{1, 2}, {3, 4}}; // 声明一个二维整型数组并初始化
        class Person {
            String name;
            int age;

            Person(String name, int age) {
                this.name = name;
                this.age = age;
            }
        }

        Person person = new Person("Alice", 30); // 声明一个 Person 类型变量并初始化

        ArrayList<String> list = new ArrayList<>(); // 声明一个 ArrayList 类型变量
        list.add("Item 1"); // 初始化集合
        list.add("Item 2"); // 添加元素

        //用MyClass继承接口并重写myMethod抽象方法
        class MyClass implements MyInterface {
            @Override
            public void myMethod() {
                System.out.println("Implemented method");
            }
            // 使用接口

        }
        MyInterface obj = new MyClass(); // 可以声明为接口类型并初始化为实现类的实例
        obj.myMethod(); // 调用实现的方法
    }
    // 声明一个注解
    public @interface MyAnnotation {
        String value() default "default"; // 定义一个方法，带有默认值
        int count() default 1; // 另一个方法
    }
    // 声明一个接口
    public interface MyInterface {
        void myMethod(); // 声明一个抽象方法
    }



}
